Voice over Internet Protocol (VoIP) telephony calls may be routed in an IMS network using a telephone number mapping (ENUM) database. FIG. 1 illustrates a flow diagram of routing a voice call in an IMS network using ENUM. A caller may place a call on their home network (HN) with caller user equipment (UE) and reach a callee of another HN on the callee's UE. Typically, the caller dials an E.164 number of the callee, which may be passed to a Proxy Call Session Control Function (P-CSCF) of the caller's HN. Based on the E.164 number, the P-CSCF sends an invite (Request URI) message and passes it to a Serving-CSCF (S-CSCF) of the caller's HN. The S-CSCF queries an ENUM database of the caller's HN in an attempt to resolve the E.164 number to a Uniform Resource Indicator (URI).
Typically, the ENUM database will return a Session Initiation Protocol (SIP) URI or a telephone (TEL) URI to the S-CSCF based on the query. Based on the SIP/TEL URI, the S-CSCF queries a Domain Name System (DNS) of the caller's HN to resolve a domain name of the URI to an Internet Protocol (IP) address. The DNS returns the IP address of the URI domain to the S-CSCF. The IP address is then passed to an Interrogating-CSCF (I-CSCF) of the callee's HN.
In a particular implementation, using the IP address, the caller's HN sends a SIP INVITE request to the callee's HN and passes the SIP INVITE request to the UE of the callee.
In some circumstances, the ENUM database may not return a SIP URI or a TEL URI in response to its being queried (e.g., the communication requested returns a URI unknown to the S-CSCF, thereby preventing call completion). In this case, the call is not routed using the IMS core, but rather via a public switched telephone network (PSTN). Furthermore, if an entry for the E.164 number is not in the ENUM database, the caller is commonly routed to an announcement which indicates an error condition.
In other circumstances, the non-SIP or non-TEL URIs returned by the ENUM database may be resolved by the caller's network. However, the caller typically makes alternate call completion decisions despite knowledge of whether such decisions will have a beneficial effect for the caller.